// pages/login/login.js
import request from '../../utils/request'
Page({
  /**
   * 页面的初始数据
   */
  data: {
    // 做了个点击输入框，label移动的东西
    tit1: "",
    tit2: "",

    // 二维码状态
    qrDefault: 'https://img1.baidu.com/it/u=1629184190,3216022764&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500',
    qrStatus: "未获取",

    // 手机号登录
    number: "",
    password: ""
  },
  // 验证登录状态
  async getLoginStatus(cookie = '') {
    let userInfo = await request("/login/status", {
      cookie,
      timestamp: Date.now()
    })
    wx.setStorageSync('userInfo', JSON.stringify(userInfo.data.profile))
    wx.setStorageSync('cookie', JSON.stringify(cookie))
  },

  // 二维码相关 【都要加时间戳，防止缓存】
  async handleQr() {
    // 1、获取 key 
    let qrKey = await request("/login/qr/key", { timestamp: Date.now() })

    // 2、获取 二维码图片信息
    let qrCreate = await request("/login/qr/create", {
      key: qrKey.data.unikey,
      qrimg: true,
      timestamp: Date.now()
    })
    this.setData({
      qrDefault: qrCreate.data.qrimg,
      qrStatus: "当前已获取，等待扫码中"
    })

    // 3、扫描二维码
    let timer = setInterval(async () => {
      let qrCheck = await request("/login/qr/check", {
        key: qrKey.data.unikey,
        timestamp: Date.now()
      })

      // 判断扫码状态
      if (qrCheck.code === 800) {
        this.setData({
          qrStatus: '二维码已过期,请重新获取'
        })
        wx.showToast({
          title: '二维码已过期,请重新获取',
          icon: 'error'
        })
        clearInterval(timer)
        return;
      }
      if (qrCheck.code === 803) {
        // 这一步会返回cookie
        clearInterval(timer)

        await this.getLoginStatus(qrCheck.cookie);

        // 关闭所有页面，跳转到应用某页面，这样个人页在onLoad接受，只执行一次，不用再onshow 中执行多次
        wx.reLaunch({
          url: '/pages/personal/personal',
        })
      }
    }, 3000)
  },



  // 手机号登录相关
  handleFocus(e) {
    if (e.target.id == "number") {
      this.setData({
        tit1: "top:-30rpx; font-size:28rpx;"
      })
    } else if (e.target.id == "password") {
      this.setData({
        tit2: "top:-30rpx; font-size:28rpx;"
      })
    }
  },
  handleBlur(e) {
    // 内容为空，label位置就回去
    if (e.target.id == "number" && e.detail.value == "") {
      this.setData({
        tit1: ""
      })
    } else if (e.target.id == "password" && e.detail.value == "") {
      this.setData({
        tit2: ""
      })
    }
  },
  handleSubmit(e) {
    // console.log(e.detail.value); // {number: "11", password: "11"}
    let { number, password } = e.detail.value
    this.setData({
      number: number,
      password: password
    })

    /* 
      手机号验证
      1、空值；2、格式不正确；3、正确通过
    */
    if (!number) {
      wx.showToast({
        title: '手机号不能为空',
        icon: 'none'
      })
      // 因为是异步任务，后面代码没有必要去执行
      return;
    }
    // 定义正则表达式
    let phoneReg = /^1(3|4|5|6|7|8|9)\d{9}$/
    if (!phoneReg.test(number)) {
      wx.showToast({
        title: '手机号格式错误',
        icon: 'none'
      })
      return;
    }

    // 判断密码不能为空
    if (!password) {
      wx.showToast({
        title: '密码不能为空',
        icon: 'none'
      })
      return;
    }
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})